
import re

# match
# text = 'abc'
# ret = re.match('a',text)  # 开头开始匹配
# print(ret.group())

# . 匹配任意字符 除了\n
# text = 'abc'
# ret = re.match('.',text)  # 开头开始匹配
# print(ret.group())

# \d 匹配任意数字
# text = '13131'
# ret = re.match('\d',text)  # 开头开始匹配
# print(ret.group())


# \D 匹配任意非数字
# text = 'sdvsdbvds131'
# ret = re.match('\D',text)  # 开头开始匹配
# print(ret.group())

# \s 匹配空白字符 \n \t \r
# text = '\nsdvsdbvds131'
# ret = re.match('\s',text)  # 开头开始匹配
# print(ret.group())


# \S 匹配非空白字符 \n \t \r
# text = 'sdvsdbvds131'
# ret = re.match('\S',text)  # 开头开始匹配
# print(ret.group())


# \w 匹配a-z A-Z及数字下划线
# text = 'sdvsdbvds131'
# ret = re.match('\w',text)  # 开头开始匹配
# print(ret.group())


# \W 匹配的和\w相反
# text = '{:sdvsdbvds131'
# ret = re.match('\W',text)  # 开头开始匹配
# print(ret.group())

# [] 匹配中括号的某一项都算成功
# text = 'sdsdvsdbvds131'
# ret = re.match('[sd]',text)  # 开头开始匹配
# print(ret.group())

# 使用组合的方式实现\d
# text = 'svsdvsdvs'
# ret = re.match('[^0-9]',text)  # 开头开始匹配
# print(ret.group())

# 使用组合的方式实现\w
# text = 'fbdfbd15bd16df1b'
# ret = re.match('[a-zA-Z0-9]',text)  # 开头开始匹配
# print(ret.group())




# * 匹配任意多个字符
# a = 'abc'
# ret = re.match('\w*',a)
# print(ret.group())


# + 匹配1个或者多个字符
# a = 'abc'
# ret = re.match('\w+',a)
# print(ret.group())


# ? 匹配前一个字符0个或者一个
# a = 'abc'
# ret = re.match('\w?',a)
# print(ret.group())


# {m} 匹配m个字符
# a = 'abc'
# ret = re.match('\w{2}',a)
# print(ret.group())

# {m,n} 匹配m-n之间的个数的字符
# a = 'abcdefg'
# ret = re.match('\w{1,3}',a)
# print(ret.group())


# 练习题
# 1. 验证手机号码：手机号码的规则是以1开头，第二位可以是34587，后面那9位就可以随意了。
# a = '15102115904'
# ret = re.match("1[34587]\d{9}",a)
# print(ret.group())
# 2. 验证邮箱：邮箱的规则是邮箱名称是用数字、英文字符、下划线组成的，然后是@符号，后面就是域名了。
# a = '2573179560@qq.com'
# ret = re.match("\w+@[a-z]+\.[a-z]+",a)
# print(ret.group())
# 3. 验证URL：URL的规则是前面是http或者https或者是ftp然后再加上一个冒号，再加上一个斜杠，再后面就是可以出现任意非空白字符了。
# a = 'https://www.zhipin.com/web/geek/resume?editItem=userinfo'
# ret = re.match("(https|https|ftp)://\S+",a)
# print(ret.group())
# 4. 验证身份证：身份证的规则是，总共有18位，前面17位都是数字，后面一位可以是数字，也可以是小写的x，也可以是大写的X。
# a = '412728199701261638'
# ret = re.match("\d{17}[\dXx]",a)
# print(ret.group())



# ^ 开头
# a = 'Hello word'
# ret = re.search("^Hello",a)
# print(ret.group())

# $ 结尾
# a = 'Hello word'
# ret = re.search("word$",a)
# print(ret.group())


# | 匹配多个字符串或者表达式
# a = 'Hello word'
# ret = re.search("word|Hello",a)
# print(ret.group())


# 贪婪和非贪婪
# a = '123456'
# ret = re.search("\d+?",a) # 1 非贪婪
# print(ret.group())


# 案例1
# a = '<h1>这是标题</h1>'
# ret = re.search("<.+?>",a) #
# print(ret.group())

# 案例2 验证一个字符是不是0-100之间的数字
# a = '100'
# ret = re.match("0$|[1-9]\d?$|100$",a) #
# print(ret.group())


# 转义字符
# a = r'hello\nword'
# a = 'hello\\nword'
# print(a)

# 正则表达式中的转义字符
# a = 'hello word$88'
# print(re.findall('\$\d+',a))

# 原生字符串和正则表达式
# 先把字符串放在语言Python语言层面进行解析
# Python语言层面进行解析后的结果放到正则表达式进行解析
# a = '\chello word$88'
# ret = re.match(r'\\c',a)
# print(ret.group())

# 分组
# text = 'appie price is $99 price is $88'
# ret = re.search('.+(\$\d+).+(\$\d+)',text)
# print(ret.groups())  # 全部分组
# print(ret.group(0))
# print(ret.group(1))
# print(ret.group(2))



# findall  # 所有满足条件的
# text = 'appie price is $99 price is $88'
# ret = re.findall('(\$\d+)',text)
# print(ret)

# sub  # 替换
# text = '123nihao hello word'
# ret = re.sub('\d+','sub',text)
# print(ret)
html = """
<div class="job-detail">
    <p>1. 3年以上相关开发经验 ，全日制统招本科以上学历</p>
    <p>2. 精通一门或多门开发语言(Python,C,Java等)，其中至少有一门有3年以上使用经验</p>
    <p>3. 熟练使用ES/mysql/mongodb/redis等数据库；</p>
    <p>4. 熟练使用django、tornado等web框架，具备独立开发 Python/Java 后端开发经验；</p>
    <p>5. 熟悉 Linux / Unix 操作系统&nbsp;</p>
    <p>6. 熟悉 TCP/IP，http等网络协议</p>
    <p>福利：</p>
    <p>1、入职购买六险一金（一档医疗+公司全额购买商业险）+开门红+全额年终奖（1年13薪，一般会比一个月高）</p>
    <p>2、入职满一年有2次调薪调级机会</p>
    <p>3、项目稳定、团队稳定性高，团队氛围非常好（汇合员工占招行总员工比例接近50%）；</p>
    <p>4、有机会转为招商银行内部员工；</p>
    <p>5、团队每月有自己的活动经费，法定节假日放假安排；</p>
    <p>6、办公环境优良，加班有加班费（全额工资为计算基数，加班不超过晚上10点，平日加班为时薪1.5倍，周末加班为日薪2倍，周末加班也可优先选择调休，管理人性化）。</p>
</div>
"""
# ret = re.sub('<.*?>','',html)
# print(ret)

# split # 分割
# text = '123nihao,hello;word'
# ret = re.split(',|;',text)
# print(ret)

# compil 编译正则表达式
text = 'nihao,hello;word 34.56'
pattern = re.compile('\d+\.?\d*')
ret = re.search(pattern,text)
print(ret.group())
